package com.cnit1818.generator;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * User: MaYong
 * Date: 12-11-19
 * Time: 下午6:09
 * To change this template use File | Settings | File Templates.
 */
public class GenObjects {
    public static void main(String[] args) throws IOException,
            TemplateException {

        /* ------------------------------------------------------------------- */
        /* You usually do it only once in the whole application life-cycle: */

        /* Create and adjust the configuration */
        Configuration cfg = new Configuration();
        cfg.setDirectoryForTemplateLoading(new File(
                "E:/SaiTe/danpin/IbatisGeneration/src"));
        cfg.setObjectWrapper(new DefaultObjectWrapper());

        /* ------------------------------------------------------------------- */
        /* You usually do these for many times in the application life-cycle: */

        /* Get or create a template */
        Template temp = cfg.getTemplate("entity.ftl");

        /* Create a data-model */
        Map<String, Object> root = new HashMap<String, Object>();
        root.put("class", "F32B");
        root.put("package", "com.cnit1818");
        Collection<Map<String, String>> properties = new HashSet<Map<String, String>>();
        root.put("properties", properties);

        /* subfield 1: currency */
        Map<String, String> currency = new HashMap<String, String>();
        currency.put("name", "currency");
        currency.put("type", "String");
        currency.put("memo", "  //注释");
        properties.add(currency);

        /* subfield 2: amount */
        Map<String, String> amount = new HashMap<String, String>();
        amount.put("name", "amount");
        amount.put("type", "Double");
        amount.put("memo", "  //注释");
        properties.add(amount);

        /* Merge data-model with template */
        Writer out = new OutputStreamWriter(System.out);
        temp.process(root, out);
        out.flush();
    }
}
